#!/bin/bash

#
# Define la expresion regular para fechas validas.
#
expresionRegularFecha1='[0-9]{2}[-/][0-9]{2}[-/][0-9]{4}$'
#
# Funcion que valida una fecha en formato dd/mm/yyyy
#
# @param fecha - La primer fecha a validar.
#
# @return -- Retorna:
#            0 Si la fecha es valida
#            1 Si la fecha no es valida
#
function validar_fecha()
{
	#
	# Otengo la fecha a validar
	#
	fecha=$1
	#echo "Fecha q me llega $fecha"
	#
	# Parseo la fecha a validar
	#
	if [[ $fecha =~ $expresionRegularFecha1 ]]
	then
		#
		# Obtengo dia de fecha a validar
		#
		local diaFecha=`echo $fecha | cut -c -2`

		#
		# Obtengo mes de fecha a validar
		#
		local mesFecha=`echo $fecha | cut -c 4-5`

		#
		# Obtengo anio de fecha a validar
		#
		local anioFecha=`echo $fecha | cut -c 7-`
	else
		#
		# Fecha no es valida, no cumple con el formato
		#
		#echo "Formato INVALIDO"
		return 1
	fi;

	#echo "diaF $diaFecha mesF $mesFecha anioF $anioFecha"

	#
	# Valido mes de fecha a validar
	#
	if [ $mesFecha -lt 0 -o $mesFecha -gt 12 ]
	then
		#
		# Mes invalido, fecha no es valida
		#
		return 1
	fi;


#Calculo cantidad dias del mes
	case $mesFecha in
	    01) days=31;;
	    02) days=28 ;;
	    03) days=31 ;;
	    04) days=30 ;;
	    05) days=31 ;;
	    06) days=30 ;;
	    07) days=31 ;;
	    08) days=31 ;;
	    09) days=30 ;;
	    10) days=31 ;;
	    11) days=30 ;;
	    12) days=31 ;;
	    *) days=-1;;
	esac

LoguearT.pl "GrabarParqueT" "I" "diaF $diaFecha mesF $mesFecha anioF $anioFecha $days" "GrabarParqueT"

	#
	# Valido dia de fecha a validar
	#
	if [ $diaFecha -lt 0 -o $diaFecha -gt $days ]
	then
		#
		# Dia invalido, fecha no es valida
		#
		return 1
	fi;

	#
	# Fecha es valida
	#

	return 0
}

#
# Verifico que recibo 1 parametro obligatorio.
# 1) FECHA
#
if [ $# -ne 1 ]
then
	return 3
fi;

#
# Obtengo primer parametro obligatorio
# 1) FECHA
#
fecha=$1

#
# Invoco la funcion validar fecha
#
validar_fecha $1

#
# Devuelvo el resultado de la funcion validar fecha
#
return $?
